package co.edu.udea.iw.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import co.edu.udea.iw.dao.ProductoDAO;
import co.edu.udea.iw.dto.producto;
import co.edu.udea.iw.exception.waDaoException;

public class ProductoDAOHibernate extends HibernateDaoSupport implements ProductoDAO {

	@Override
	public producto insertar(producto Producto) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();
			session.save(Producto);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			// session.close();
		}
		return Producto;
	}

	@Override
	public producto modificar(producto Producto) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();
			session.update(Producto);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}
		return Producto;
	}

	@Override
	public void eliminar(producto Producto) throws waDaoException {
		Transaction tx = null;
		Session session = null;
		try {
			session = getSession();
			tx = session.beginTransaction();

			session.delete(Producto);
			tx.commit();

		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}

	}

	@Override
	public List<producto> Consultar() throws waDaoException {
		List<producto> productos = null;
		Session session = null;
		try {
			session = getSession();

			Criteria criteria = session.createCriteria(producto.class);
			productos = criteria.list();
		} catch (HibernateException e) {

			throw new waDaoException(e);
		}
		return productos;
	}

	@Override
	public producto obtener(String tipo) throws waDaoException {
		producto Producto = null;
		Session session = null;
		try {
			session = getSession();
			Producto = (producto) session.load(producto.class, tipo);
		} catch (HibernateException e) {

			throw new waDaoException(e);
		} finally {
			session.close();
		}
		return Producto;
	}

}
